package entradasalida;

import java.awt.Frame;
import java.io.File;
import java.util.ArrayList;

import javax.media.jai.JAI;
import javax.media.jai.PlanarImage;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;

import Jama.Matrix;

public class EntradaFicheroImagen {
	/**
	 * Imagen que contendrá los datos
	 */
	private Grafico imagen;
	
	/**
	 * Fichero gráfico del que se obtendrán los datos de entrada
	 */
	private File fichero;
	
	/**
	 * Lista de pixeles de la imagen
	 */
	protected ArrayList<Matrix> entrada;
	
	/**
	 * Constructor por defecto
	 */
	public EntradaFicheroImagen(){
	}

	/**
	 * Constructor de la clase
	 * @param arg0 Frame llamante
	 */
	public EntradaFicheroImagen(Frame arg0){
		JFileChooser f = new JFileChooser(System.getProperty("user.dir"));
		FileNameExtensionFilter filtro = new FileNameExtensionFilter("Ficheros gráficos", "jpg", "gif", "jpeg", "png");
		f.setFileFilter(filtro);
		int returnVal = f.showOpenDialog(arg0);
		if(returnVal == JFileChooser.APPROVE_OPTION) {
			fichero = f.getSelectedFile();
		} else {
			fichero = null;
		}
		if (fichero != null){
			PlanarImage image = JAI.create("fileload", fichero.getAbsolutePath());
			imagen = new Grafico(image);
			entrada = imagen.getEntrada();
			System.out.println("Fichero "+ fichero.getName() + " leído correctamente.");
		}
	}
	
	/*=========================================================================*
	 *							Accesores y mutadores                          * 
	 *=========================================================================*/

	public ArrayList<Matrix> getEntrada() {
		return entrada;
	}

	public void setEntrada(ArrayList<Matrix> entrada) {
		this.entrada = entrada;
	}
	
	public File getFichero() {
		return fichero;
	}

	public Grafico getImagen() {
		return imagen;
	}

	public void setImagen(Grafico imagen) {
		this.imagen = imagen;
	}
	
}
